遠い昔、おそらく.NET Framework 1.xの時代に以下のようなライブラリを作成して使用していた。
using System;
namespace SimpleCharTestLib
{
public class SimpleCharTest
{
public static bool IsAlpha(char ch)
{
return (ch >= 'A' && ch <= 'Z')
|| (ch >= 'a' && ch <= 'z');
}
public static bool IsDigit(char ch)
{
return ch >= '0' && ch <= '9';
}
public static bool IsAlphaOrDigit(char ch)
{
return IsAlpha(ch) || IsDigit(ch);
}
}
}
こんなものを書いた理由は、単にASCII文字を判定したいだけなのに、ライブラリのメソッドは国際化の設定次第で他の文字もアルファベットや数字として扱う場合があるからだ。
そのあたりは理想主義と現実との間にあるねじれだった。
ところが、このねじれが突然解消されてしまったのだ。
.NET 6でchar型にIsAsciiメソッドが追加され、.NET7でIsAsciiDigit、IsAsciiHexDigit、IsAsciiHexDigitLower、IsAsciiHexDigitUpper、IsAsciiLetter、IsAsciiLetterLower、IsAsciiLetterOrDigit、IsAsciiLetterUpperが追加された。
これが便利な改善であろうことは言うまでもない。
それに似たものを自作して使っていたのだから。
彼らと自分は同じ世界に生きている……と思える瞬間である。
補足 §
とはいえ、これが【他の国の事情なんか知ったことではない。ASCIIだけあれば良い】という【主義者】を増長させねば良いのだが。IsAsciiDigitとIsDigitは目的に応じた適切な使い分けが必要なのだ。